package com.bestcem.xm.award.service;

import com.bestcem.xm.award.entity.pojo.AwardAwardDO;
import com.bestcem.xm.award.service.impl.AwardMqHandlerImpl;

/**
 * @author xa.zhang <xa.zhang@idiaoyan.com>
 * @version v1.0
 * @date 2021/7/16 14:57
 * @desc 抽奖公共部分
 */
public interface DrawCommonService {


    /**
     * 中奖之后增加领奖记录数量(包括红包、抽奖)
     *
     * @param awardId 奖励id
     */
    void updateAwardAndSendNotification(String awardId);

    /**
     * 获取奖励中的奖励总数量(包括红包、抽奖)
     *
     * @param award 奖励
     * @return 奖励总数量
     * @author xa.zhang
     * @date 2021/10/13 14:22
     */
    int getAwardTotalNum(AwardAwardDO award);


    /**
     * 奖池误删或者未创建补充恢复(抽奖和红包)
     * 尝试去创建，如果获取不到锁，会退出不创建奖池。
     *
     * @param awardId 奖励id
     * @return void
     * @author xa.zhang
     * @date 2021/10/13 14:27
     * @see AwardMqHandlerImpl
     */

    void tryRestoreAwardPool(String awardId);

    /**
     * 入口
     *
     * @param awardId 奖励id
     * @return void
     * @author xa.zhang
     * @date 2021/10/13 16:16
     */
    void asyncRestoreAwardPool(String awardId);

}
